home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -serious- / programming / c / icu-1.3.1 / icu-bin / include / uchar.h < prev    next >
C/C++ Source or Header  |  2000-02-23  |  20KB  |  650 lines

  1. /*
  2. ********************************************************************************
  3. *                                                                              *
  4. * COPYRIGHT:                                                                   *
  5. *   (C) Copyright Taligent, Inc.,  1997                                        *
  6. *   (C) Copyright International Business Machines Corporation,  1997-1998      *
  7. *   Licensed Material - Program-Property of IBM - All Rights Reserved.         *
  8. *   US Government Users Restricted Rights - Use, duplication, or disclosure    *
  9. *   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
  10. *                                                                              *
  11. ********************************************************************************
  12. *
  13. * File UCHAR.H
  14. *
  15. * Modification History:
  16. *
  17. *   Date        Name        Description
  18. *   04/02/97    aliu        Creation.
  19. *   03/29/99    helena      Updated for C APIs.
  20. *   4/15/99     Madhu       Updated for C Implementation and Javadoc
  21. *   5/20/99     Madhu       Added the function u_getVersion()
  22. *   8/19/1999   srl         Upgraded scripts to Unicode 3.0
  23. *   8/27/1999   schererm    UCharDirection constants: U_...
  24. ********************************************************************************
  25. */
  26.  
  27. #ifndef UCHAR_H
  28. #define UCHAR_H
  29.  
  30. #include "utypes.h"
  31. /*===========================================================================*/
  32. /* Unicode version number                                                    */
  33. /*===========================================================================*/
  34. #define UNICODE_VERSION  "3.0.0.beta"
  35.  
  36. /**
  37.  * The Unicode C API allows you to query the properties associated with individual 
  38.  * Unicode character values.  
  39.  * <p>
  40.  * The Unicode character information, provided implicitly by the 
  41.  * Unicode character encoding standard, includes information about the script 
  42.  * (for example, symbols or control characters) to which the character belongs,
  43.  * as well as semantic information such as whether a character is a digit or 
  44.  * uppercase, lowercase, or uncased.
  45.  * <P>
  46.  */
  47.  
  48. /**
  49.  * Constants.
  50.  */
  51.  
  52. /**
  53.  * The minimum value a UChar can have.  The lowest value a
  54.  * UChar can have is 0x0000.
  55.  */
  56.   static UChar UCHAR_MIN_VALUE;
  57. /**
  58.  * The maximum value a UChar can have.  The greatest value a
  59.  * UChar can have is 0xffff.
  60.  */
  61.  
  62.  static UChar UCHAR_MAX_VALUE;
  63. /**
  64.  * Data for enumerated Unicode general category types
  65.  */
  66.  
  67.  
  68. enum UCharCategory
  69. {
  70.     U_UNASSIGNED              = 0,
  71.     U_UPPERCASE_LETTER        = 1,
  72.     U_LOWERCASE_LETTER        = 2,
  73.     U_TITLECASE_LETTER        = 3,
  74.     U_MODIFIER_LETTER         = 4,
  75.     U_OTHER_LETTER            = 5,
  76.     U_NON_SPACING_MARK        = 6,
  77.     U_ENCLOSING_MARK          = 7,
  78.     U_COMBINING_SPACING_MARK  = 8,
  79.     U_DECIMAL_DIGIT_NUMBER    = 9,
  80.     U_LETTER_NUMBER           = 10,
  81.     U_OTHER_NUMBER            = 11,
  82.     U_SPACE_SEPARATOR         = 12,
  83.     U_LINE_SEPARATOR          = 13,
  84.     U_PARAGRAPH_SEPARATOR     = 14,
  85.     U_CONTROL_CHAR            = 15,
  86.     U_FORMAT_CHAR             = 16,
  87.     U_PRIVATE_USE_CHAR        = 17,
  88.     U_SURROGATE               = 18,
  89.     U_DASH_PUNCTUATION        = 19,
  90.     U_START_PUNCTUATION       = 20,
  91.     U_END_PUNCTUATION         = 21,
  92.     U_CONNECTOR_PUNCTUATION   = 22,
  93.     U_OTHER_PUNCTUATION       = 23,
  94.     U_MATH_SYMBOL             = 24,
  95.     U_CURRENCY_SYMBOL         = 25,
  96.     U_MODIFIER_SYMBOL         = 26,
  97.     U_OTHER_SYMBOL            = 27,
  98.     U_INITIAL_PUNCTUATION     = 28,
  99.     U_FINAL_PUNCTUATION       = 29,
  100.     U_GENERAL_OTHER_TYPES     = 30,
  101.     U_CHAR_CATEGORY_COUNT
  102. };
  103.  
  104. typedef enum UCharCategory UCharCategory;
  105. /**
  106.  * This specifies the language directional property of a character set.
  107.  */
  108.  
  109. enum UCharDirection   { 
  110.     U_LEFT_TO_RIGHT               = 0, 
  111.     U_RIGHT_TO_LEFT               = 1, 
  112.     U_EUROPEAN_NUMBER             = 2,
  113.     U_EUROPEAN_NUMBER_SEPARATOR   = 3,
  114.     U_EUROPEAN_NUMBER_TERMINATOR  = 4,
  115.     U_ARABIC_NUMBER               = 5,
  116.     U_COMMON_NUMBER_SEPARATOR     = 6,
  117.     U_BLOCK_SEPARATOR             = 7,
  118.     U_SEGMENT_SEPARATOR           = 8,
  119.     U_WHITE_SPACE_NEUTRAL         = 9, 
  120.     U_OTHER_NEUTRAL               = 10, 
  121.     U_LEFT_TO_RIGHT_EMBEDDING     = 11,
  122.     U_LEFT_TO_RIGHT_OVERRIDE      = 12,
  123.     U_RIGHT_TO_LEFT_ARABIC        = 13,
  124.     U_RIGHT_TO_LEFT_EMBEDDING     = 14,
  125.     U_RIGHT_TO_LEFT_OVERRIDE      = 15,
  126.     U_POP_DIRECTIONAL_FORMAT      = 16,
  127.     U_DIR_NON_SPACING_MARK        = 17,
  128.     U_BOUNDARY_NEUTRAL            = 18,
  129.     U_CHAR_DIRECTION_COUNT
  130. };
  131.  
  132. typedef enum UCharDirection UCharDirection;
  133. /**
  134.  * Script range as defined in the Unicode standard.
  135.  */
  136.  
  137. /* Generated from Unicode Data files */
  138. enum UCharScript {
  139. /* Script names */
  140.     U_BASIC_LATIN,
  141.     U_LATIN_1_SUPPLEMENT,
  142.     U_LATIN_EXTENDED_A,
  143.     U_LATIN_EXTENDED_B,
  144.     U_IPA_EXTENSIONS,
  145.     U_SPACING_MODIFIER_LETTERS,
  146.     U_COMBINING_DIACRITICAL_MARKS,
  147.     U_GREEK,
  148.     U_CYRILLIC,
  149.     U_ARMENIAN,
  150.     U_HEBREW,
  151.     U_ARABIC,
  152.     U_SYRIAC,
  153.     U_THAANA,
  154.     U_DEVANAGARI,
  155.     U_BENGALI,
  156.     U_GURMUKHI,
  157.     U_GUJARATI,
  158.     U_ORIYA,
  159.     U_TAMIL,
  160.     U_TELUGU,
  161.     U_KANNADA,
  162.     U_MALAYALAM,
  163.     U_SINHALA,
  164.     U_THAI,
  165.     U_LAO,
  166.     U_TIBETAN,
  167.     U_MYANMAR,
  168.     U_GEORGIAN,
  169.     U_HANGUL_JAMO,
  170.     U_ETHIOPIC,
  171.     U_CHEROKEE,
  172.     U_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS,
  173.     U_OGHAM,
  174.     U_RUNIC,
  175.     U_KHMER,
  176.     U_MONGOLIAN,
  177.     U_LATIN_EXTENDED_ADDITIONAL,
  178.     U_GREEK_EXTENDED,
  179.     U_GENERAL_PUNCTUATION,
  180.     U_SUPERSCRIPTS_AND_SUBSCRIPTS,
  181.     U_CURRENCY_SYMBOLS,
  182.     U_COMBINING_MARKS_FOR_SYMBOLS,
  183.     U_LETTERLIKE_SYMBOLS,
  184.     U_NUMBER_FORMS,
  185.     U_ARROWS,
  186.     U_MATHEMATICAL_OPERATORS,
  187.     U_MISCELLANEOUS_TECHNICAL,
  188.     U_CONTROL_PICTURES,
  189.     U_OPTICAL_CHARACTER_RECOGNITION,
  190.     U_ENCLOSED_ALPHANUMERICS,
  191.     U_BOX_DRAWING,
  192.     U_BLOCK_ELEMENTS,
  193.     U_GEOMETRIC_SHAPES,
  194.     U_MISCELLANEOUS_SYMBOLS,
  195.     U_DINGBATS,
  196.     U_BRAILLE_PATTERNS,
  197.     U_CJK_RADICALS_SUPPLEMENT,
  198.     U_KANGXI_RADICALS,
  199.     U_IDEOGRAPHIC_DESCRIPTION_CHARACTERS,
  200.     U_CJK_SYMBOLS_AND_PUNCTUATION,
  201.     U_HIRAGANA,
  202.     U_KATAKANA,
  203.     U_BOPOMOFO,
  204.     U_HANGUL_COMPATIBILITY_JAMO,
  205.     U_KANBUN,
  206.     U_BOPOMOFO_EXTENDED,
  207.     U_ENCLOSED_CJK_LETTERS_AND_MONTHS,
  208.     U_CJK_COMPATIBILITY,
  209.     U_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A,
  210.     U_CJK_UNIFIED_IDEOGRAPHS,
  211.     U_YI_SYLLABLES,
  212.     U_YI_RADICALS,
  213.     U_HANGUL_SYLLABLES,
  214.     U_HIGH_SURROGATES,
  215.     U_HIGH_PRIVATE_USE_SURROGATES,
  216.     U_LOW_SURROGATES,
  217.     U_PRIVATE_USE_AREA,
  218.     U_CJK_COMPATIBILITY_IDEOGRAPHS,
  219.     U_ALPHABETIC_PRESENTATION_FORMS,
  220.     U_ARABIC_PRESENTATION_FORMS_A,
  221.     U_COMBINING_HALF_MARKS,
  222.     U_CJK_COMPATIBILITY_FORMS,
  223.     U_SMALL_FORM_VARIANTS,
  224.     U_ARABIC_PRESENTATION_FORMS_B,
  225.     U_SPECIALS,
  226.     U_HALFWIDTH_AND_FULLWIDTH_FORMS,
  227.     U_CHAR_SCRIPT_COUNT,
  228.     U_NO_SCRIPT=U_CHAR_SCRIPT_COUNT
  229. };
  230. typedef enum UCharScript UCharScript;
  231.  
  232. /**
  233.  * Values returned by the u_getCellWidth() function.
  234.  */
  235. enum UCellWidth
  236. {
  237.     U_ZERO_WIDTH              = 0,
  238.     U_HALF_WIDTH              = 1,
  239.     U_FULL_WIDTH              = 2,
  240.     U_NEUTRAL_WIDTH           = 3,
  241.     U_CELL_WIDTH_COUNT
  242. };
  243.  
  244. typedef enum UCellWidth UCellWidth;
  245. /**
  246.  * Functions to classify characters.
  247.  */
  248.  
  249. /**
  250.  * Determines whether the specified UChar is a lowercase character
  251.  * according to Unicode 2.1.2.
  252.  *
  253.  * @param ch    the character to be tested
  254.  * @return  true if the character is lowercase; false otherwise.
  255.  * @see UNICODE_VERSION
  256.  * @see uisupper()
  257.  * @see uistitle()
  258.  * @see uislower()
  259.  */
  260. U_CAPI bool_t U_EXPORT2
  261. u_islower(UChar c);
  262.  
  263. /**
  264.  * Determines whether the specified character is an uppercase character
  265.  * according to Unicode 2.1.2.
  266.  *
  267.  * @param ch    the character to be tested
  268.  * @return  true if the character is uppercase; false otherwise.
  269.  * @see uislower()
  270.  * @see uistitle
  271.  * @see utolower()
  272.  */
  273. U_CAPI bool_t U_EXPORT2
  274. u_isupper(UChar c);
  275.  
  276. /**
  277.  * Determines whether the specified character is a titlecase character
  278.  * according to Unicode 2.1.2.
  279.  *
  280.  * @param ch    the character to be tested
  281.  * @return  true if the character is titlecase; false otherwise.
  282.  * @see uisupper()
  283.  * @see uislower()
  284.  * @see utotitle()
  285.  */
  286. U_CAPI bool_t U_EXPORT2
  287. u_istitle(UChar c);
  288.  
  289. /**
  290.  * Determines whether the specified character is a digit according to Unicode
  291.  * 2.1.2.
  292.  *
  293.  * @param ch    the character to be tested
  294.  * @return  true if the character is a digit; false otherwise.
  295.  */
  296. U_CAPI bool_t U_EXPORT2
  297. u_isdigit(UChar c);
  298.  
  299. /**
  300.  * Determines whether the specified numeric value is actually a defined character
  301.  * according to Unicode 2.1.2.
  302.  *
  303.  * @param ch    the character to be tested
  304.  * @return  true if the character has a defined Unicode meaning; false otherwise.
  305.  *
  306.  * @see uisdigit()
  307.  * @see uisalpha()
  308.  * @see uisalnum()
  309.  * @see uisupper()
  310.  * @see uislower()
  311.  * @see uistitle()
  312.  */
  313. U_CAPI bool_t U_EXPORT2
  314. u_isdefined(UChar c);
  315.  
  316. /**
  317.  * Determines whether the specified character is a letter
  318.  * according to Unicode 2.1.2.
  319.  *
  320.  * @param ch    the character to be tested
  321.  * @return  true if the character is a letter; false otherwise.
  322.  *
  323.  * @see uisdigit()
  324.  * @see uisalnum()
  325.  */
  326. U_CAPI bool_t U_EXPORT2
  327. u_isalpha(UChar c);
  328.  
  329. /**
  330.  * Determines if the specified character is a space character or not.
  331.  *
  332.  * @param ch    the character to be tested
  333.  * @return  true if the character is a space character; false otherwise.
  334.  */
  335. U_CAPI bool_t U_EXPORT2
  336. u_isspace(UChar c);
  337.  
  338. /**
  339.  * Determines whether the specified character is a control character or not.
  340.  *
  341.  * @param ch    the character to be tested
  342.  * @return  true if the Unicode character is a control character; false otherwise.
  343.  *
  344.  * @see uisprint()
  345.  */
  346. U_CAPI bool_t U_EXPORT2
  347. u_iscntrl(UChar c);
  348.  
  349.  
  350. /**
  351.  * Determines whether the specified character is a printable character according 
  352.  * to Unicode 2.1.2.
  353.  *
  354.  * @param ch    the character to be tested
  355.  * @return  true if the Unicode character is a printable character; false otherwise.
  356.  *
  357.  * @see uiscntrl()
  358.  */
  359. U_CAPI bool_t U_EXPORT2
  360. u_isprint(UChar c);
  361.  
  362. /**
  363.  * Determines whether the specified character is of the base form according 
  364.  * to Unicode 2.1.2.
  365.  *
  366.  * @param ch    the character to be tested
  367.  * @return  true if the Unicode character is of the base form; false otherwise.
  368.  *
  369.  * @see uisalpha()
  370.  * @see uisdigit()
  371.  */
  372. U_CAPI bool_t U_EXPORT2
  373. u_isbase(UChar c);
  374. /**
  375.   * Returns the linguistic direction property of a character.
  376.   * <P>
  377.   * Returns the linguistic direction property of a character.
  378.   * For example, 0x0041 (letter A) has the LEFT_TO_RIGHT directional 
  379.   * property.
  380.   * @see UCharDirection
  381.   */
  382. U_CAPI UCharDirection U_EXPORT2
  383. u_charDirection(UChar c);
  384.  
  385. /**
  386.  * Returns a value indicating the display-cell width of the character
  387.  * when used in Asian text, according to the Unicode standard (see p. 6-130
  388.  * of The Unicode Standard, Version 2.0).  The results for various characters
  389.  * are as follows:
  390.  * <P>
  391.  *      ZERO_WIDTH: Characters which are considered to take up no display-cell space:
  392.  *          control characters
  393.  *          format characters
  394.  *          line and paragraph separators
  395.  *          non-spacing marks
  396.  *          combining Hangul jungseong
  397.  *          combining Hangul jongseong
  398.  *          unassigned Unicode values
  399.  * <P>
  400.  *      HALF_WIDTH: Characters which take up half a cell in standard Asian text:
  401.  *          all characters in the General Scripts Area except combining Hangul choseong
  402.  *              and the characters called out specifically above as ZERO_WIDTH
  403.  *          alphabetic and Arabic presentation forms
  404.  *          halfwidth CJK punctuation
  405.  *          halfwidth Katakana
  406.  *          halfwidth Hangul Jamo
  407.  *          halfwidth forms, arrows, and shapes
  408.  * <P>
  409.  *      FULL_WIDTH:  Characters which take up a full cell in standard Asian text:
  410.  *          combining Hangul choseong
  411.  *          all characters in the CJK Phonetics and Symbols Area
  412.  *          all characters in the CJK Ideographs Area
  413.  *          all characters in the Hangul Syllables Area
  414.  *          CJK compatibility ideographs
  415.  *          CJK compatibility forms
  416.  *          small form variants
  417.  *          fullwidth ASCII
  418.  *          fullwidth punctuation and currency signs
  419.  * <P>
  420.  *      NEUTRAL:  Characters whose cell width is context-dependent:
  421.  *          all characters in the Symbols Area, except those specifically called out above
  422.  *          all characters in the Surrogates Area
  423.  *          all charcaters in the Private Use Area
  424.  * <P>
  425.  * For Korean text, this algorithm should work properly with properly normalized Korean
  426.  * text.  Precomposed Hangul syllables and non-combining jamo are all considered full-
  427.  * width characters.  For combining jamo, we treat we treat choseong (initial consonants)
  428.  * as double-width characters and junseong (vowels) and jongseong (final consonants)
  429.  * as non-spacing marks.  This will work right in text that uses the precomposed
  430.  * choseong characters instead of teo choseong characters in a row, and which uses the
  431.  * choseong filler character at the beginning of syllables that don't have an initial
  432.  * consonant.  The results may be slightly off with Korean text following different
  433.  * conventions.
  434.  */
  435. U_CAPI uint16_t U_EXPORT2
  436. u_charCellWidth(UChar c);
  437.  
  438. /**
  439.  * Returns a value indicating a character category according to Unicode
  440.  * 2.1.2.
  441.  * @param c            the character to be tested
  442.  * @return a value of type int, the character category.
  443.  * @see UCharCategory
  444.  */
  445. U_CAPI int8_t U_EXPORT2
  446. u_charType(UChar c);
  447.  
  448. /**
  449.  * Retrives the decimal numeric value of a digit character.
  450.  * @param c the digit character for which to get the numeric value
  451.  * @return the numeric value of ch in decimal radix.  This method returns
  452.  * -1 if ch is not a valid digit character.
  453.  */
  454. U_CAPI int32_t U_EXPORT2
  455. u_charDigitValue(UChar c);
  456.  
  457. /**
  458.  *
  459.  * Returns the script associated with a character.
  460.  * @see #UCharScript
  461.  */
  462. U_CAPI UCharScript     U_EXPORT2
  463. u_charScript(UChar    ch);
  464.  
  465. /** 
  466.  * The following functions are java specific.
  467.  */
  468. /**
  469.   * A convenience method for determining if a Unicode character 
  470.   * is allowed to start in a Unicode identifier.
  471.   * A character may start a Unicode identifier if and only if
  472.   * it is a letter.
  473.   *
  474.   * @param   c  the Unicode character.
  475.   * @return  TRUE if the character may start a Unicode identifier;
  476.   *          FALSE otherwise.
  477.   * @see     u_isalpha
  478.   * @see     u_isIDPart
  479.   */
  480. U_CAPI bool_t U_EXPORT2
  481. u_isIDStart(UChar c);
  482. /**
  483.   * A convenience method for determining if a Unicode character
  484.   * may be part of a Unicode identifier other than the starting
  485.   * character.
  486.   * <P>
  487.   * A character may be part of a Unicode identifier if and only if
  488.   * it is one of the following:
  489.   * <ul>
  490.   * <li>  a letter
  491.   * <li>  a connecting punctuation character (such as "_").
  492.   * <li>  a digit
  493.   * <li>  a numeric letter (such as a Roman numeral character)
  494.   * <li>  a combining mark
  495.   * <li>  a non-spacing mark
  496.   * <li>  an ignorable control character
  497.   * </ul>
  498.   * 
  499.   * @param   c  the Unicode character.
  500.   * @return  TRUE if the character may be part of a Unicode identifier;
  501.   *          FALSE otherwise.
  502.   * @see     u_isIDIgnorable
  503.   * @see     u_isIDStart
  504.      */
  505. U_CAPI bool_t U_EXPORT2
  506. u_isIDPart(UChar c);
  507. /**
  508.   * A convenience method for determining if a Unicode character 
  509.   * should be regarded as an ignorable character 
  510.   * in a Unicode identifier.
  511.   * <P>
  512.   * The following Unicode characters are ignorable in a 
  513.   * Unicode identifier:
  514.   * <table>
  515.   * <tr><td>0x0000 through 0x0008,</td>
  516.   *                                 <td>ISO control characters that</td></tr>
  517.   * <tr><td>0x000E through 0x001B,</td> <td>are not whitespace</td></tr>
  518.   * <tr><td>and 0x007F through 0x009F</td></tr>
  519.   * <tr><td>0x200C through 0x200F</td>  <td>join controls</td></tr>
  520.   * <tr><td>0x200A through 0x200E</td>  <td>bidirectional controls</td></tr>
  521.   * <tr><td>0x206A through 0x206F</td>  <td>format controls</td></tr>
  522.   * <tr><td>0xFEFF</td>               <td>zero-width no-break space</td></tr>
  523.   * </table>
  524.   * 
  525.   * @param   c  the Unicode character.
  526.   * @return  TRUE if the character may be part of a Unicode identifier;
  527.   *          FALSE otherwise.
  528.   * @see     u_isIDPart
  529.   */
  530. U_CAPI bool_t U_EXPORT2
  531. u_isIDIgnorable(UChar c);
  532.     /**
  533.      * A convenience method for determining if a Unicode character
  534.      * is allowed as the first character in a Java identifier.
  535.      * <P>
  536.      * A character may start a Java identifier if and only if
  537.      * it is one of the following:
  538.      * <ul>
  539.      * <li>  a letter
  540.      * <li>  a currency symbol (such as "$")
  541.      * <li>  a connecting punctuation symbol (such as "_").
  542.      * </ul>
  543.      *
  544.      * @param   c  the Unicode character.
  545.      * @return  TRUE if the character may start a Java identifier;
  546.      *          FALSE otherwise.
  547.      * @see     u_isJavaIDPart
  548.      * @see     u_isalpha
  549.      * @see     u_isIDStart
  550.      */
  551. U_CAPI bool_t U_EXPORT2
  552. u_isJavaIDStart(UChar c);
  553.     /**
  554.      * A convenience method for determining if a Unicode character 
  555.      * may be part of a Java identifier other than the starting
  556.      * character.
  557.      * <P>
  558.      * A character may be part of a Java identifier if and only if
  559.      * it is one of the following:
  560.      * <ul>
  561.      * <li>  a letter
  562.      * <li>  a currency symbol (such as "$")
  563.      * <li>  a connecting punctuation character (such as "_").
  564.      * <li>  a digit
  565.      * <li>  a numeric letter (such as a Roman numeral character)
  566.      * <li>  a combining mark
  567.      * <li>  a non-spacing mark
  568.      * <li>  an ignorable control character
  569.      * </ul>
  570.      * 
  571.      * @param   c the Unicode character.
  572.      * @return  TRUE if the character may be part of a Unicode identifier; 
  573.      *          FALSE otherwise.
  574.      * @see     u_isIDIgnorable
  575.      * @see     u_isJavaIDStart
  576.      * @see     u_isalpha
  577.      * @see     u_isdigit
  578.      * @see     u_isIDPart
  579.      */
  580.  
  581. U_CAPI bool_t U_EXPORT2
  582. u_isJavaIDPart(UChar c);
  583.  
  584. /**
  585.  * Functions to change character case.
  586.  */
  587.  
  588. /**
  589.  * The given character is mapped to its lowercase equivalent according to
  590.  * Unicode 2.1.2; if the character has no lowercase equivalent, the character 
  591.  * itself is returned.
  592.  * <P>
  593.  * A character has a lowercase equivalent if and only if a lowercase mapping
  594.  * is specified for the character in the Unicode 2.1.2 attribute table.
  595.  * <P>
  596.  * utolower() only deals with the general letter case conversion.
  597.  * For language specific case conversion behavior, use ustrToUpper().
  598.  * For example, the case conversion for dot-less i and dotted I in Turkish,
  599.  * or for final sigma in Greek.
  600.  *
  601.  * @param ch    the character to be converted
  602.  * @return  the lowercase equivalent of the character, if any;
  603.  *      otherwise the character itself.
  604.  */
  605. U_CAPI UChar U_EXPORT2
  606. u_tolower(UChar c);
  607.  
  608. /**
  609.  * The given character is mapped to its uppercase equivalent according to Unicode
  610.  * 2.1.2; if the character has no uppercase equivalent, the character itself is 
  611.  * returned.
  612.  * <P>
  613.  * utoupper() only deals with the general letter case conversion.
  614.  * For language specific case conversion behavior, use ustrToUpper().
  615.  * For example, the case conversion for dot-less i and dotted I in Turkish,
  616.  * or ess-zed (i.e., "sharp S") in German.
  617.  *
  618.  * @param ch    the character to be converted
  619.  * @return  the uppercase equivalent of the character, if any;
  620.  *      otherwise the character itself.
  621.  */
  622. U_CAPI UChar U_EXPORT2
  623. u_toupper(UChar c);
  624. /**
  625.  * The given character is mapped to its titlecase equivalent according to Unicode
  626.  * 2.1.2.  There are only four Unicode characters that are truly titlecase forms
  627.  * that are distinct from uppercase forms.  As a rule, if a character has no
  628.  * true titlecase equivalent, its uppercase equivalent is returned.
  629.  * <P>
  630.  * A character has a titlecase equivalent if and only if a titlecase mapping
  631.  * is specified for the character in the Unicode 2.1.2 data.
  632.  *
  633.  * @param ch    the character to be converted
  634.  * @return  the titlecase equivalent of the character, if any;
  635.  *      otherwise the character itself.
  636.  */
  637. U_CAPI UChar U_EXPORT2
  638. u_totitle(UChar c);
  639.  
  640. /**
  641.  *
  642.  *The function is used to get the Unicode standard Version that is used
  643.  *@return the Unicode stabdard Version number
  644.  */
  645. U_CAPI const char* U_EXPORT2
  646. u_getVersion(void);
  647.  
  648. #endif /*_UCHAR*/
  649. /*eof*/
  650.